feat: normalize replace & add from_parts #1078
Draft
+67
−21
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Close #1067 and close #441.
This:
_validate_pre, which causes__replace__to support un-normalized strings forpre. So nowpre=("alpha", 1)is supported, and gets normalized to("a", 1). This should reduce the desire to use_parse_letter_version.normalize_pre, which does the normalization. We don't have to have this, but without it https://github.com/pypa/hatch/blob/hatchling-v1.28.0/backend/src/hatchling/version/scheme/standard.py#L40-L44 would require a little more work.Version.from_parts, which constructs a version from parts. It's quite similar to__replace__, but implemented separately for performance and because it's a little simpler when it comes toNonevalues.